package designPattern.producersConsumer;
import java.util.LinkedList;

/**
 * 仓库
 * 生产者消费者模式的尝试
 * @author zhaohuihbwj
 * 改动：将仓库改为单例模式
 * 修改时间：2017年4月6日
 */
class Depot {
    /*仓库锁*/
    static final Object LOCK = new Object();

    /*仓库的最大存储量*/
    private final int max_size = 40;

    /*仓库的库存量*/
    private LinkedList<Object> list = new LinkedList<>();

    /*禁止创建实例*/
    private Depot() {
        System.out.println("创建实例一次");
    }

    /* 此处使用一个内部类来维护单例，而且只有被调用到才会装载，从而实现了延迟加载 */
    private static class DepotFactory{
        //静态初始化器，由JVM来保证线程安全
        private static Depot instance = new Depot();
    }

    /*返回实例*/
    static Depot getDepot(){
        return DepotFactory.instance;
    }

    /*返回仓库的最大存储量*/
    int getMaxSize() {
        return max_size;
    }

    /*返回仓库库存*/
    LinkedList<Object> getList() {
        return list;
    }

}
